package org.liquidByte.trafficMustang.androidApp.listview.row;

import java.security.InvalidParameterException;

import org.liquidByte.trafficMustang.R;
import org.liquidByte.trafficMustang.androidApp.listview.adapter.RowAdapter;
import org.liquidByte.trafficMustang.androidApp.services.dto.TrechoDTO;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.TextView;

public class PassageiroRow extends ModelListViewRow<TrechoDTO> implements OnClickListener {
	
	private TextView txvPassageiro;
	private TextView txvSituacao;
	private ImageButton imgbLocalizacao;
	
	private RowActionListener<PassageiroRow> localizacaoActionListener;

	public PassageiroRow(RowAdapter<TrechoDTO> adapter, View view) {
		super(adapter, view);
		if (view.getId() != R.layout.listview_row_passageiro) {
			throw new InvalidParameterException("view is not a type of listview_row_passageiro");
		}
	}

	public TextView getTxvPassageiro() {
		if (this.txvPassageiro == null) {
			this.txvPassageiro = this.findViewById(TextView.class, R.id.row_passageiro_txvPassageiro);
		}
		return txvPassageiro;
	}

	public TextView getTxvSituacao() {
		if (this.txvSituacao == null) {
			this.txvSituacao = this.findViewById(TextView.class, R.id.row_passageiro_txvSituacao);
		}
		return txvSituacao;
	}
	
	protected ImageButton getImgbLocalizacao() {
		if (this.imgbLocalizacao == null) {
			this.imgbLocalizacao = this.findViewById(ImageButton.class, R.id.row_passageiro_imgbLocalizacao);
		}
		return imgbLocalizacao;
	}
	
	public void setLocalizacaoActionListener(RowActionListener<PassageiroRow> localizacaoActionListener) {
		this.localizacaoActionListener = localizacaoActionListener;
	}

	@Override
	public void init() {
		this.getImgbLocalizacao().setOnClickListener(this);
	}

	@Override
	public void bindToView() {
		TrechoDTO trecho = this.getModel();
		if (trecho == null) {
			this.getTxvPassageiro().setText(null);
			this.getTxvSituacao().setText(null);
			this.getImgbLocalizacao().setVisibility(View.GONE);
		} else {
			if (trecho.getPassageiro() == null) {
				this.getTxvPassageiro().setText(null);
			} else {
				this.getTxvPassageiro().setText(trecho.getPassageiro().getNome());
			}
			
			this.getTxvSituacao().setText(trecho.getSituacao());
			this.getImgbLocalizacao().setVisibility(trecho.isPassageiroRastreavel() ? View.VISIBLE : View.GONE);
		}
	}

	@Override
	public void onClick(View v) {
		if (this.getImgbLocalizacao() == v) {
			if (this.localizacaoActionListener != null) {
				this.localizacaoActionListener.actionPerformed(this);	
			}			
		}
	}
}
